package logic;

import logic.file.IFile;
import logic.file.LocalDirectory;
import logic.file.LocalFile;

//fabryka powinna moc tworzyc na z roznych protokołów
//TODO fabryka w tym samym pakiecie i na konstruktorach obiektów tworzonych przez fabrykę dostęp pakietowy
public class FileSystemFactory {
	
	public static IFile getElement(String... path) throws UnsupportedProtocol, NotExistingFileException {
		String fullPath = FileHelper.buildPath(path);
		Protocol protocol = null;
			protocol = FileHelper.getProtocol(fullPath);
			switch (protocol) {
				case FILE_URI : if (FileHelper.isDir(fullPath)) {
								return new LocalDirectory(fullPath);		//ToDO trzeba rozpoznawac czy to folder czy plik
							} else if (FileHelper.exists(fullPath)) {
								return new LocalFile(fullPath);
							} else {
								throw new NotExistingFileException();
							}
				default : throw new UnsupportedOperationException();		
			}
	}
}
